import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;

public class GuessNumberGame {
    public static void main(String[] args) {
        Random rand = new Random(); // 创建Random对象用于生成随机数
        int targetNumber = rand.nextInt(100) + 1; // 生成1到100之间的随机数
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象用于读取用户输入
        int guess = 0;
        int attempts = 0;

        do {
            try {
                System.out.println("请输入一个1到100之间的数字进行猜测:");
                while (!scanner.hasNextInt()) { // 确保输入的是整数
                    System.out.println("这不是一个有效的数字，请重新输入:");
                    scanner.next(); // 清除输入流中的错误输入
                }

                guess = scanner.nextInt(); // 读取用户输入的整数

                // 检查输入是否在有效范围内（虽然题目没有明确要求，但加上这个检查可以使游戏更健壮）
                if (guess < 1 || guess > 100) {
                    System.out.println("数字必须在1到100之间，请重新输入:");
                    continue; // 如果输入不在范围内，则不增加尝试次数并重新输入
                }

                attempts++; // 猜测次数加1

                if (guess > targetNumber) {
                    System.out.println("太大了！");
                } else if (guess < targetNumber) {
                    System.out.println("太小了！");
                } else {
                    System.out.println("恭喜！你猜对了！数字就是 " + targetNumber);
                    System.out.println("你总共猜了 " + attempts + " 次。");
                }

            } catch (InputMismatchException e) {
                // 这个异常捕获是可选的，因为上面的while循环已经处理了非整数输入
                // 但如果输入的是非数字字符和整数的混合（如"abc123"），则会抛出此异常
                System.out.println("输入错误，请输入一个有效的整数:");
                scanner.next(); // 清除输入流中的错误输入
            }

        } while (guess != targetNumber); // 循环直到用户猜对数字

        scanner.close(); // 关闭Scanner对象
    }
}